# -*- coding: utf-8 -*-
# __author__:heliujiang
# 2022/4/4 15:55
import requests
import config
from common.test_log import create_logger
class Service:
    _instance = None
    logger = create_logger()
    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

    def __init__(self, host):
        if host == 'dev':
            self.host = config.DEV_URL
        elif host == 'uat':
            self.host = config.UAT_URL
        elif host == 'pro':
            self.host = config.PRO_URL

    # 服务列表
    def get_service_list(self, test_data, token):
        """
            发送HTTP GET请求以获取服务列表。

            参数:
            - test_data: dict, 包含请求参数的字典，其中包含如下键：
              - seriesCode: str, 车系代码。
              - goodsTypeId: int, 货物类型ID（0全部分类）。
              - pageNum: int, 页码。
              - pageSize: int, 每页大小。
              - userId: str, 用户ID。
              - modelCode: str, 车型代码。
              - vin: str, 车辆识别码。
              - isVcos：int, 是否是vcso平台（可选ture），
            - token: str, 用于验证的令牌。

            返回:
            - response: requests.Response对象，包含HTTP响应。

        """
        url = self.host + "/appstore/goods/service/list"
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    # 服务详情
    def get_service_detail(self, test_data, token):
        """
            请求获取特定服务的详细信息。

            参数:
            - test_data: dict, 包含请求参数的字典，其中包含：
              - id: int, 服务的ID。
              - userId: str, 用户ID.
              - vin: str,车辆识别码。
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 表示HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/service/detail'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    # 服务分类
    def get_servce_type(self, test_data, token):
        """
            发送HTTP GET请求以获取服务分类。

            参数:
            - test_data: dict, 一个字典，包含以下键：
              - type: int, 服务类型 服务2
              - seriesCode: str, 车系编码。
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/type/list'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    # 服务规格信息查询
    def get_servce_info(self, test_data, token):
        """
            发送HTTP GET请求以获取服务规格信息。

            参数:
            - test_data: dict, 一个字典，包含以下键：
              - id: int,  服务id
              - vin: str, 车系编码。
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/service/getProfitList'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    # 查询服务是否上下架 "data": "1"表示上架
    def get_servce_state(self, test_data, token):
        """
            发送HTTP GET请求以获取服务商品是否已上架。

            参数:
            - test_data: dict, 一个字典，包含以下键：
              - id: int,  服务id
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/service/state'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res
